Dynomotion

Group: DynoMotion Message: 11230 From: cncperfect Date: 3/17/2015
Subject: Tuning servo & Max Following Error
Hi
recently i setup Kflop/Kanalog in mini mill with Panasonic Analog Servo.
max error is about 10000 but i have MaxFollowingError when jogging axis . i attached "Step" and "Move" motion in StepResponse

i think 10000 is big digit for max error but still have error


regard

Amir

  @@attachment@@
Group: DynoMotion Message: 11234 From: Tom Kerekes Date: 3/17/2015
Subject: Re: Tuning servo & Max Following Error [2 Attachments]
Hi Amir,

Sorry I don't understand the question.  It looks like your following error is about 100 encoder counts.

The Max Error setting will not make your error smaller.  Max Error can cause the Servo to not correct big errors so aggressively.  See:

Step response is not useful for large steps as the servo should never have such large errors to correct.  Use "Move" instead for tuning.

You will need to tune the system better (increase gains and add filters) to increase performance and reduce following errors.

Regards
TK



Group: DynoMotion Message: 11237 From: Amir Date: 3/18/2015
Subject: Re: Tuning servo & Max Following Error
thx Tom
i used step response for both mode : Move and Step
when increase gain , move mode is better but in step mode have overshoot
in low gain , dont have overshoot ,but i see delay between command and position, how i can reach to minimum delay time ?
with setting P I D or add filter ?

Group: DynoMotion Message: 11239 From: Tom Kerekes Date: 3/18/2015
Subject: Re: Tuning servo & Max Following Error
Hi Amir,

Like I said in the previous email I don't think you should use the "Step" button on the Step Response Screen.  Testing small steps can be useful for understanding the dynamic response of the system.  But when the system in actual operation an instant large error should never occur.  Any high performance system with an Integrator will always have overshoot for a Step Response.  This is good.  I've attached a diagram that may help explain how an Integrator works.

But you should also fully optimize the P D and filter gains before increasing I Gains.

Regards
TK


From: "Amir cncperfect@... [DynoMotion]" <DynoMotion@yahoogroups.com>
To: "DynoMotion@yahoogroups.com" <DynoMotion@yahoogroups.com>
Sent: Wednesday, March 18, 2015 2:00 AM
Subject: Re: [DynoMotion] Tuning servo & Max Following Error

 
thx Tom
i used step response for both mode : Move and Step
when increase gain , move mode is better but in step mode have overshoot
in low gain , dont have overshoot ,but i see delay between command and position, how i can reach to minimum delay time ?
with setting P I D or add filter ?



Group: DynoMotion Message: 11245 From: Amir Date: 3/19/2015
Subject: Re: Tuning servo & Max Following Error [1 Attachment]
Hi Tom
i solved the problem with increase "max limits output" to 2000 ,and now i dont have big error( now Max Following Error is about 500).i am happy with speed response.
now i want use "Home_MM" code for home with Z channel encoder.
is it possible describe little about this code routine ?

best regard
Amir
Group: DynoMotion Message: 11247 From: Tom Kerekes Date: 3/19/2015
Subject: Re: Tuning servo & Max Following Error
Hi Amir,

The Home_MM is fairly complex in that it handles many modes of Homing with multiple axes being homed simultaneously using multiple homing sequences and to be all configurable from the PC Host.

The LoadUserData is a function where specific Homing Sequences can be hard coded.  See below for an example for how to specify to home one Z axis.

You might consider using the SimpleHomeIndexFunctionTest.c and SimpleHomeIndexFunction.c examples which are simpler.

Regards
TK


//Use this function to manually load the persist.UserData[]
void LoadUserData(void)

    persist.UserData[REQUESTED_HOME_AXIS_FLAGS]=0;
    persist.UserData[HOME_NEGATIVE_FLAGS]=0; 
    persist.UserData[REPEAT_HOME_FLAGS]=0; 
    persist.UserData[INPUT_HOME_STATES]=0; 

    SequenceId=0;
   
    //Set Z axis to home first for safety
    AxisChannel = 2;
    CreateHomeTask(
        HOME_TO_LIMIT_THEN_MOVE_TO_POSITION,      // home type
        HOME_DIR_NEGATIVE,    // switch dir
        FALSE,                // repeat home
        100,                 // slowspeed
        400,                 // fastspeed
        32,                 // limitbit
        1,                     // limitstate
        0,                    // encoderbit
        1000,                 // origin (amount to move inside)
        2000);                // sensor offset (amount to move if on sensor)

}